package kuzha.runtime;

import java.util.Map;

import javax.script.Bindings;

import kuzha.KuzhaObject;
import kuzha.TypeName;

@TypeName("Scope")
public abstract class AbstractContext extends AbstractTable implements KuzhaObject, Bindings {
	private final KuzhaObject _this;
	
	public AbstractContext(KuzhaObject _this) {
		super();
		this._this = _this;
	}
	
	public AbstractContext(KuzhaObject _this, KuzhaObject _parent) {
		super(_parent);
		this._this = _this;
	}
	
	public AbstractContext(KuzhaObject _this, KuzhaObject _super, KuzhaObject _parent) {
		super(_super, _parent);
		this._this = _this;
	}
	
	protected AbstractContext(Map<String, KuzhaObject> table, KuzhaObject _this, KuzhaObject _super, KuzhaObject _parent) {
		super(table, _super, _parent);
		this._this = _this;
	}
	
	@Override
	public KuzhaObject getThis() {
		return _this;
	}
}
